@火凤凰
1年前 提问
1个回答
什么是引发 SQL 注入漏洞的主要原因
房乐
1年前
sql注入的原因,表面上说是因为拼接字符串,构成sql语句,没有使用sql语句预编译,绑定变量。但是更深层次的原因是,将用户输入的字符串,当成了“sql语句”来执行。也有部分SQL注入是因为不当的类型处理、不安全的数据库配置、不合理的查询集处理、不当的错误处理、转义字符处理不合适、多个提交处理不当等原因产生的,其本质是将用户的输入数据作为命令来执行了。
sql 注入防范措施有以下这些:
把应用服务器的数据库权限降至最低,尽可能地减少 SQL 注入攻击带来的危害
避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
对进入数据库的特殊字符(’’尖括号&*;等)进行转义处理,或编码转换。
所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。
在测试阶段,建议使用专门的 SQL 注入检测工具进行检测。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
善用数据库操作库,有些库包可能已经做好了相关的防护,我们只需阅读其文档,看是否支持相应的功能即可。